package facade;

import exceptions.AdicionarASiMesmoException;
import exceptions.AmigoJaAdicionado;
import exceptions.AtributoNaoPrenchidoException;
import exceptions.ContaExistenteException;
import exceptions.EsperandoAceitarException;
import exceptions.EventoInexistenteException;
import exceptions.LoginInvalidoException;
import exceptions.SenhaIncompletaException;
import exceptions.SenhaInvalidaException;
import exceptions.UsuarioNaoAmigoException;
import exceptions.UsuarioNaoCriadorException;
import exceptions.UsuarioNaoEncontradoException;
import agenda.AgendaColaborativa;


public class EasyAcceptFacade{
	
	private AgendaColaborativa agenda = new AgendaColaborativa();

	/**
	 * @see AgendaColaborativa#getNomeUsuario(String)
	 */
	public String getNomeUsuario(String login) throws Exception {
			
		return agenda.getNomeUsuario(login);				
	}
	
	/**
	 * @see AgendaColaborativa#criarUsuario(String, String, String)
	 */
	public void criarUsuario(String l, String s, String n) throws SenhaIncompletaException, LoginInvalidoException, ContaExistenteException{
		agenda.criarUsuario(l, s, n);
	}

	/**
	 * @see AgendaColaborativa#contemUsuario(String)
	 */
	public boolean contemUsuario(String login){
		
		return agenda.contemUsuario(login);
	}
	
	/**
	 * @see AgendaColaborativa#getDescricao(String, String)
	 */
	public String getDescricao(String l, String s) throws AtributoNaoPrenchidoException, UsuarioNaoEncontradoException{
		return agenda.getDescricao(l, s);
	}
	
	/**
	 * @see AgendaColaborativa#getEstadoCivil(String, String)
	 */
	public String getEstadoCivil(String l, String s) throws AtributoNaoPrenchidoException, UsuarioNaoEncontradoException{
		return agenda.getEstadoCivil(l, s);
	}

	/**
	 * @see AgendaColaborativa#getAniversario(String, String)
	 */
	public String getAniversario(String l, String s) throws AtributoNaoPrenchidoException, UsuarioNaoEncontradoException{
		return agenda.getAniversario(l, s);
	}
	
	/**
	 * @see AgendaColaborativa#getCidadeNatal(String, String)
	 */
	public String getCidadeNatal(String l, String s) throws AtributoNaoPrenchidoException, UsuarioNaoEncontradoException{
		return agenda.getCidadeNatal(l, s);
	}
	
	/**
	 * @see AgendaColaborativa#editarDescricao(String, String, String)
	 */
	public void editarDescricao(String l, String s, String d) throws SenhaInvalidaException, UsuarioNaoEncontradoException{
		agenda.editarDescricao(l, s, d);
	}
	
	/**
	 * @see AgendaColaborativa#editarEstadoCivil(String, String, String)
	 */
	public void editarEstadoCivil(String l, String s, String e)throws SenhaInvalidaException, UsuarioNaoEncontradoException{
		agenda.editarEstadoCivil(l, s, e);
	}
	
	/**
	 * @see AgendaColaborativa#editarAniversario(String, String, String)
	 */
	public void editarAniversario(String l, String s, String a)throws SenhaInvalidaException, UsuarioNaoEncontradoException{
		agenda.editarAniversario(l, s, a);
	}
	
	/**
	 * @see AgendaColaborativa#editarCidadeNatal(String, String, String)
	 */
	public void editarCidadeNatal(String l, String s, String c)throws SenhaInvalidaException, UsuarioNaoEncontradoException{
		agenda.editarCidadeNatal(l, s, c);
	}
	
	/**
	 * @see AgendaColaborativa#ehAmigo(String, String)
	 */
	public boolean ehAmigo(String login, String amigo){
		return agenda.ehAmigo(login, amigo);
	}
	
	/**
	 * @see AgendaColaborativa#adicionarAmigo(String, String)
	 */
	public void adicionarAmigo(String id, String amigo) throws AmigoJaAdicionado, AdicionarASiMesmoException, EsperandoAceitarException, UsuarioNaoEncontradoException{
		agenda.adicionarAmigo(id, amigo);
	}
	
	/**
	 * @see AgendaColaborativa#getAmigos(String)
	 */
	public String getAmigos(String login){
		return agenda.getAmigos(login);
	}
	
	/**
	 * @see AgendaColaborativa#criarEvento(String, String, String, String) 
	 */
	public String criarEvento(String dono, String titulo, String data, String local){
		return agenda.criarEvento(dono, titulo, data, local);
	}
	
	/**
	 * @see AgendaColaborativa#getDataEvento(String) 
	 */
	public String getDataEvento(String id) throws EventoInexistenteException{
		return agenda.getDataEvento(id);
	}
	
	/**
	 * @see AgendaColaborativa#getTituloEvento(String)
	 */
	public String getTituloEvento(String id) throws EventoInexistenteException{
		return agenda.getTituloEvento(id);
	}
	
	/**
	 * @see AgendaColaborativa#getLocalEvento(String)
	 */
	public String getLocalEvento(String id) throws EventoInexistenteException{
		return agenda.getLocalEvento(id);
	}
	
	/**
	 * @see AgendaColaborativa#adicionarParticipante(String, String, String)
	 */
	public void adicionarParticipante(String dono, String id, String login)throws UsuarioNaoCriadorException,UsuarioNaoAmigoException{
		agenda.adicionarParticipante(dono, id, login);
	}
	
	/**
	 * @see AgendaColaborativa#getParticipantesEvento(String)
	 */
	public String getParticipantesEvento(String id){
		return agenda.getParticipantesEvento(id);
	}
	
	/**
	 * @see AgendaColaborativa#getDonoEvento(String)
	 */
	public String getDonoEvento(String id){
		return agenda.getDonoEvento(id);
	}
	
	/**
	 * @see AgendaColaborativa#getEventosUsuarioEhDono(String)
	 */
	public String getEventosUsuarioEhDono(String dono){
		return agenda.getEventosUsuarioEhDono(dono);
	}
	
	/**
	 * @see AgendaColaborativa#ehDono(String, String)
	 */
	public boolean ehDono(String login, String id){
		return agenda.ehDono(login, id);
	}
	
	/**
	 * @see AgendaColaborativa#removerEvento(String, String)
	 */
	public void removerEvento(String id, String dono) throws EventoInexistenteException, UsuarioNaoCriadorException, UsuarioNaoEncontradoException{
		agenda.removerEvento(id, dono);
	}
	
	/**
	 * @see AgendaColaborativa#getEventosUsuarioParticipa(String)
	 */
	public String getEventosUsuarioParticipa(String login){
		return agenda.getEventosUsuarioParticipa(login);
	}
	
	public void limpaSistema(){
		agenda.limpaSistema();
	}
	
	public void encerraSistema(){
		agenda.encerraSistema();
		this.agenda = new AgendaColaborativa();
	}
}
